package cn.doitedu.day06

import cn.doitedu.day01.utils.SparkUtil

/**
 * @Date 22.4.4
 * @Created by HANGGE
 * @Description
 */
object C03_Transformtion_NumPartition {
  def main(args: Array[String]): Unit = {
      val sc = SparkUtil.getSc
      val rddx = sc.parallelize(List(1, 2, 3, 4, 5, 6), 2)
      val rddy = sc.parallelize(List(1, 2, 3, 4, 5, 6), 3)
      // 1 转换来的RDD的分区数一般不变
      val rdd1 = rddx.map(_ * 10)  // 2
      // 2 调用算子  改变分区 和
      val rdd2 = rddx.union(rddy)
       // 3  不会改变分区个数
       val kvRDD1 = rddx.zipWithIndex()
       val kvRDD2 = rddy.zipWithIndex()
      // 4  join  分区个数大的为依据
      val resRDD = kvRDD1.join(kvRDD2)
      println(resRDD.getNumPartitions)
      // 5 指定下游分分区数据   凡是产生shuffle的算子 指定分区
     val resRDD2 =  kvRDD1.join(kvRDD2 , 4)
      println(resRDD2.getNumPartitions)
      resRDD.distinct(1)



  }

}
